/*
 * service_frt_panel.c
 *
 *  Created on: 18/02/2010
 *      Author: bruno.silva
 */

#include "target.h"
#include "phal_io_port.h"

#include "../config/service_frt_panel_config.h"
#include "service_frt_panel.h"


void service_frt_panel_int(void)
{
	phal_io_port_setPinDirection(PORT_CLOCK, PIN_CLOCK, phal_io_port_DIR_OUTPUT);
	phal_io_port_setPinDirection(PORT_DATA, PIN_DATA, phal_io_port_DIR_OUTPUT);
	phal_io_port_setPinDirection(PORT_LATCH, PIN_LATCH, phal_io_port_DIR_OUTPUT);
}

void service_frt_panel_sendColumn(U16 column, U8 height)
{
	U8 i;

	i = height;
	while (i > 0)
	{
		if((BOOL)(column & 1) == 1)
		{
			phal_io_port_setPinStatus(PORT_DATA, PIN_DATA, phal_io_port_STATUS_ON);
		}
		else
		{
			phal_io_port_setPinStatus(PORT_DATA, PIN_DATA, phal_io_port_STATUS_OFF);
		}
		column >>= 1;
		phal_io_port_setPinStatus(PORT_CLOCK, PIN_CLOCK, phal_io_port_STATUS_ON);
		phal_io_port_setPinStatus(PORT_CLOCK, PIN_CLOCK, phal_io_port_STATUS_OFF);
		i--;
	}
}

void service_frt_panel_sendBitmap(U16 *columns, U8 height, U16 size)
{
	U16 i = 0;

	for (i = 0; i < size; i++) {
		service_frt_panel_sendColumn(columns[i], height);
	}

	phal_io_port_setPinStatus(PORT_LATCH, PIN_LATCH, phal_io_port_STATUS_ON);
	phal_io_port_setPinStatus(PORT_LATCH, PIN_LATCH, phal_io_port_STATUS_OFF);
}

